package com.stars.home.vmodel

import android.app.Activity
import android.app.Application
import android.view.View
import android.widget.LinearLayout
import androidx.databinding.Bindable
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
import com.hwangjr.rxbus.RxBus
import com.stars.home.BR
import com.stars.home.R
import com.stars.home.activity.ArticleDetailActivity
import com.stars.home.activity.MainActivity
import com.stars.home.config.ConfigMMKV
import com.stars.home.config.ConfigRx
import com.stars.home.inte.ChoiceData
import com.stars.home.model.LoginBean
import com.stars.home.utils.IdentityDialogUtils
import com.stars.home.utils.net.NetEngine
import com.tencent.mmkv.MMKV
import com.trailer.base.base.BRepository
import com.trailer.base.base.BViewModel
import com.trailer.base.utils.B
import com.trailer.base.utils.MMKVManager
import com.trailer.base.utils.UiSwitch
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import kotlinx.coroutines.launch
import java.util.concurrent.TimeUnit

open class RegisterVModel(application: Application) : BViewModel<BRepository>(application) {


    var codeTip: MutableLiveData<String> = MutableLiveData(getCodeStr)
    private var disposable: Disposable? = null



    companion object {
        const val time = 60
        var timeStart: Long = 1
        const val getCodeStr = "获取验证码"

    }


    @Bindable
    open var phone: String? = null
        set(value) {
            field = value
            notifyPropertyChanged(BR.phone)
        }



    @Bindable
    var code: String? = null
        set(value) {
            field = value
            notifyPropertyChanged(BR.code)
        }




    fun getSmsCode(start: Long = 1) {
        if (codeTip.value != ForgetPasswordVModel.getCodeStr) {
            return
        }

        if (phone.isNullOrEmpty()) {
            toast(R.string.please_input_user_phone)
            return
        }

//        viewModelScope.launch {
//
//            val it = repository().lreq { NetEngine.service.getPassword(phone,"register",adminType) }
//            if (it.ok(true)) {
//                startTimer(start)
//            }
//
//        }

    }
    private fun startTimer(start: Long = 1) {
        disposeTimer()
        disposable = Observable.intervalRange(start, ForgetPasswordVModel.time - start + 1, 0, 1, TimeUnit.SECONDS)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .doOnNext {
                    ForgetPasswordVModel.timeStart = it
                    codeTip.value = if (ForgetPasswordVModel.time - it > 0) "${ForgetPasswordVModel.time - it}秒后重发" else {
                        ForgetPasswordVModel.getCodeStr
                    }
                }
                .doOnComplete() {
                    MMKVManager.instance().encode(ConfigMMKV.REGISTER_TIME_START, 60)
                }
                .doOnDispose() {
                    MMKVManager.instance().encode(ConfigMMKV.REGISTER_TIME_START, 60)
                }
                .subscribe()
    }

    private fun disposeTimer() {
        disposable?.isDisposed ?: disposable?.dispose()
    }





    fun register(view: View) {

        if (phone.isNullOrEmpty()) {
            toast(R.string.please_input_user_phone)
            return
        }
        if (code.isNullOrEmpty()) {
            toast("请输入验证码")
            return
        }





    }











}


